//
//  RIOTabBar.swift
//  RIOWeiBo
//
//  Created by Rio on 16/4/7.
//  Copyright © 2016年 RIO. All rights reserved.
//

import UIKit

class RIOTabBar: UITabBar {
    /**
     重写父类init方法
     
     - parameter frame: 给定frame
     */
    override init(frame: CGRect) {
        
        super.init(frame: frame)
        
        addSubview(plusButton)
        
    }
    
    /**
     当该视图通过xib或subview加载的时候就会执行这个方法
     默认报错
     
     一旦实现了init方法,那么当前这个类的对象可以通过手写代码创建
     编译器默认为不支持通过xib/subview加载
     
     如果想要实现,则把error句改为super.init(coder. aDecoder)
     
     - parameter aDecoder
     
     - returns: 错误提示
     */
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func layoutSubviews() {
        
        super.layoutSubviews()
        /// 定义待用frame
        let itemWidth = frame.width / 5
        let itemHeight = frame.height
        /// 定义idx作为编号
        var idx:CGFloat = 0
        
        let rect = CGRect (x: 0, y: 0, width: itemWidth, height: itemHeight)
        /**
         *  遍历子视图
         */
        for subView in subviews{
            
            if subView .isKindOfClass(NSClassFromString("UITabBarButton")!) {
                subView.frame = CGRectOffset(rect, idx * itemWidth, 0)
                
                idx += (idx == 1) ? 2 : 1
            }
            
        }
        
         /// 设置加号按钮的frame
        plusButton.frame = CGRectOffset(rect, 2*itemWidth, 0)
        /**
         *  将按钮移到最顶层 实现凸出效果
         *
         *  @param plusButton 需要上移的中间按钮
         *
         *  @return 防止出现按钮被tabbar的边缘遮挡
         */
//        bringSubviewToFront(plusButton)
    
    }
    
        /// 设置中间加号按钮
    lazy var plusButton : UIButton = {
        
        
        let button = UIButton()
        
        button.setBackgroundImage(UIImage (named: "tabbar_compose_button"), forState: .Normal)
        button.setBackgroundImage(UIImage (named: "tabbar_compose_button_highlighted"), forState: .Highlighted)
        
        button.setImage(UIImage (named: "tabbar_compose_icon_add"), forState: .Normal)
        button.setImage(UIImage (named: "tabbar_compose_icon_add_highlighted"), forState: .Highlighted)
        
        
        return button
        
    }()
    
    
}
